From: Keir Fraser Date: Tue, 28 Jul 2009 15:41:13 +0000 (+0100) Subject: xend: pass-through: fix pci passthrough for pv guest X-Git-Tag: archive/raspbian/4.8.0-1+rpi1~1^2~13547 X-Git-Url: https://dgit.raspbian.org/%22http://www.example.com/cgi/success//%22http:/www.example.com/cgi/success/?a=commitdiff_plain;h=0a8f3082f61c46bd1b48b2d8261364bf97f255f1;p=xen.git xend: pass-through: fix pci passthrough for pv guest C/S 19754: a5f584c1e2f6 breaks pci passthrough for pv guest. Signed-off-by: Dexuan Cui --- diff --git a/tools/python/xen/xend/server/pciif.py b/tools/python/xen/xend/server/pciif.py index 823a77c40f..441c7b8f68 100644 --- a/tools/python/xen/xend/server/pciif.py +++ b/tools/python/xen/xend/server/pciif.py @@ -403,6 +403,17 @@ class PciController(DevController): ' same guest with %s' raise VmError(err_msg % (s, dev.name)) + # Assigning device staticaly (namely, the pci string in guest config + # file) to PV guest needs this setupOneDevice(). + # Assigning device dynamically (namely, 'xm pci-attach') to PV guest + # would go through reconfigureDevice(). + # + # For hvm guest, (from c/s 19679 on) assigning device statically and + # dynamically both go through reconfigureDevice(), so HERE the + # setupOneDevice() is not necessary. + if not self.vm.info.is_hvm(): + for d in pci_dev_list: + self.setupOneDevice(d) wPath = '/local/domain/0/backend/pci/%u/0/aerState' % (self.getDomid()) self.aerStateWatch = xswatch(wPath, self._handleAerStateWatch) log.debug('pci: register aer watch %s', wPath)